package com.michael.leetcode;

import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

@Slf4j
public class IsMonotonic_896 {

/*    896. 单调数列
    如果数组是单调递增或单调递减的，那么它是 单调 的。
    如果对于所有 i <= j，nums[i] <= nums[j]，那么数组 nums 是单调递增的。 如果对于所有 i <= j，nums[i]> = nums[j]，那么数组 nums 是单调递减的。
    当给定的数组 nums 是单调数组时返回 true，否则返回 false。

    示例 1：
    输入：nums = [1,2,2,3]
    输出：true

    示例 2：
    输入：nums = [6,5,4,4]
    输出：true

    示例 3：
    输入：nums = [1,3,2]
    输出：false

    提示：
        1 <= nums.length <= 105
        -105 <= nums[i] <= 105

       思路   异或运算  1^0 = 1  0^0 = 0  1^1=0  0^1=1
   */
    public boolean isMonotonic(int[] nums) {
        int lastSum = -1;
        int sum = -1;
        for (int i = 0; i < nums.length - 1; i++) {
            if (nums[i] < nums[i + 1]) {
                sum = 1;
            } else if (nums[i] > nums[i + 1]) {
                sum = 0;
            }
            if (lastSum == -1) {
                lastSum = sum;
            }
            int c = lastSum ^ sum;
            if (c != 0) {
                return false;
            }
            lastSum = sum;
        }
        return true;
    }

    @Test
    public void test(){
        int [] nums = {1,2,2,3};
        isMonotonic(nums);
    }
}
